package java_thinking.unit_10._10_5.Exercise_10_5;

import java_thinking.unit_10._10_4.Exercise6.P1.SimpleInterface;

/**
 * @Description :   1.创建一个private内部类，让它实现一个public接口
 *                  2.写一个方法，它返回一个指向此private内部类的实例引用，并将此引用向上转型为该接口类型；
 *                  3.通过尝试向下转型，说明次内部类完全被隐藏了；
 * @author: cww
 * @DateTime: 2019-03-10 12:04
 */


class E11 {
    private class Inner implements SimpleInterface {

        @Override
        public void f() {
            System.out.println("E11.Inner.f()");
        }
    }
    public SimpleInterface get(){
        return new Inner();
    }
    public Inner get1(){
        return new Inner();
    }
}

class E11_HidenInnerClass{
    public static void main(String[] args) {
        E11 e11 = new E11();
        SimpleInterface si = e11.get();
        si.f();
        //这里inner已经是不可见的，无法引用
//        Inner i1 = e11.get1();
//        Inner i2 = (Inner)si;
    }
}